#include "lectorsprites.h"



cLectorSprites::cLectorSprites()
{

}

cLectorSprites::~cLectorSprites()
{

	printf(" destructor  Lector Sprites\n");
}


int cLectorSprites::LeerArregloSprites(MapaSprites &MSprites,char Nombre[80])
{	
	
	if ((manejadorArchivo = fopen(Nombre, "rb")) == NULL)
	{
	printf("error al crear el archivo");
	return 0;
	}
	int x, y;
	Uint8 rojo=0,azul,verde;
	cSprite CuadroSprite;
	int Fin=1;

	string buffer;
	char buf[20];

	/*
	
	WriteWord(ID_image);
	WriteWord(NumeroImagenes);
	WriteWord(imagen->w);
	WriteWord(imagen->h);
	WriteWord(EjeX);
	WriteWord(EjeY);

	WriteWord(ID_Grupo);
	WriteWord(ID_Miembro_Grupo);
	*/

	int id;
	int NumeroImagenes;

	while (Fin==1)
	{
		ReadWord(id);
		ReadWord(NumeroImagenes);
		if(	
				ReadWord(CuadroSprite.ancho)!=1||
				ReadWord(CuadroSprite.alto)!=1||
				ReadWord(CuadroSprite.posicionX)!=1||
				ReadWord(CuadroSprite.posicionY)!=1||
				ReadWord(CuadroSprite.grupo)!=1||
				ReadWord(CuadroSprite.noImagenGrupo)!=1)
		Fin=0;
		
		else
		{


			itoa(CuadroSprite.grupo,buf,10);
			buffer=buf;
			buffer+=" ";
			itoa(CuadroSprite.noImagenGrupo,buf,10);
			buffer+=buf;

			
			CuadroSprite.CrearSprite(CuadroSprite.ancho,CuadroSprite.alto);				//	Aux=SDL_CreateRGBSurface(SDL_SWSURFACE,CuadroSprite.ancho,CuadroSprite.alto,32,0xf000,0x0f00,0x00f0,0x000f);
			
			for (y = 0; y < CuadroSprite.alto; y++)
				for (x = 0; x < CuadroSprite.ancho; x++)
				{
					if(ReadByte(azul)!=1||ReadByte(verde)!=1||ReadByte(rojo)!=1)
						Fin=0;
					CuadroSprite.PutPixel(x,y,rojo,verde,azul);
				}
				
				CuadroSprite.AplicarTransparencia(255, 0, 255);
			//	VectorSprites.[]push_back (CuadroSprite);
				
				MSprites[buffer]=CuadroSprite;

				


		}
		
	}
//cout<<endl;	

	fclose(manejadorArchivo);
	return 1;	
}



int cLectorSprites::ReadByte(Uint8  &byte)
{
	int p;
	p=getc(manejadorArchivo);

	if(feof(manejadorArchivo))
	{	
		byte=255;
		return -1;
	}
	
		byte=p;
		return 1;
	
	
}

int cLectorSprites::ReadWord(int &word)
{
	Uint8 byteAlto=0;
	Uint8 byteBajo=0;
	if(ReadByte(byteAlto)==-1||ReadByte(byteBajo)==-1)
	{	
		word=0;
		return -1;
	}
	
	word=(byteAlto<<8)+byteBajo;
	return 1;
	
}